// SISTEMA : Sistema de Identificacao Criminal
// PROGRAMA : SCRP001
// O QUE FAZ � Exclusao da Ficha Indice Criminal
// Data : 29 de Setembro de 1997
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Path;
import java.util.Arrays;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrm2000;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrp1300A;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1300 O QUE FAZ � Exclusao da Ficha Indice Criminal *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
// @Resource
@Path("/antigo/scrp1300")
public class Scrp1300 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrm2000 scrm2000;
	Scrp1300A scrp1300A;
	// Escopo - Scrm1421Report report1;
	// Escopo - Scrm1422Report report2;
	// Escopo - Scrm1423Report report3;
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp1300 scrp1300Anterior;
	String faseproc = "0";
	private int jDataIni = 0;
	private long jReg_geral = 0;
	private String jNomeCompleto = "";
	private String jMae = "";
	private int jData_nasc = 0;
	private String[][] dedos = new String[6][3];
	private String jDelegacia = "";
	private String jDescMunicipio = "";
	private int jMunicipio = 0;
	private String jUfRegGeral = "";
	private int jDataRegistro = 0;
	private long jNoAutos = 0;
	private int jDataAtuacao = 0;
	private long jIdentidade = 0;
	private String jPai = "";
	private String jMaeLimpa = "";
	private String jAlcunha = "";
	private String jNomeAnterior = "";
	private int jSexo = 0;
	private int jCodMunNascimento = 0;
	private String jUfNascimento = "";
	private String jDocApresentado = "";
	private long jNumDocApresentado = 0;
	private String jOrgaoExpUf = "";
	private String jProfissao = "";
	private int jInstrucao = 0;
	private String jDescInstrucao = "";
	private String jNaturalidade = "";
	private String jAvRua = "";
	private int jNumero = 0;
	private String jBairro = "";
	private int jMunEndereco = 0;
	private String jUfEndereco = "";
	private int jCep = 0;
	private String jComplemento = "";
	private String jStatus = "";
	private String jDescreg = "";
	private int jAltura = 0;
	private String jDescAltura = "";
	private int jEstadoCivil = 0;
	private String jDescCivil = "";
	private int jCutis = 0;
	private String jDescCutis = "";
	private int jCorCabelo = 0;
	private String jDescCor = "";
	private int jTipoCabelo = 0;
	private String jDescTipocabelo = "";
	private int jCorOlhos = 0;
	private String jDescOlho = "";
	private String jSinais = "";
	private int jCompleicao = 0;
	private String jDescCompleicao = "";
	private String jNomeVitima = "";
	private String jMotivo = "";
	private int jOcorrencia = 0;
	private String[] jObservacoes = new String[5];
	private int jMatricula = 0;
	private String jNomeDigitador = "";
	private int jDataDig = 0;
	private int jHorario = 0;
	private long jFicha1 = 0;
	private long jFicha2 = 0;
	private String jVar = "";
	private String chave = "C";
	private String jMensagem = "";
	private String jFuncao = "Exclusao";
	private String jFunc = "Exclusao";
	private String jMaoDireita = "";
	private String jMaoEsquerda = "";

	private Scrm2000 preMapas() {
		scrm2000 = new Scrm2000(true, sessao);
		scrp1300A = new Scrp1300A(true, sessao);
		Arrays.fill(dedos, "");
		Arrays.fill(jObservacoes, "");
		// RELATORIO

		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName());
		return scrm2000;
	}

	public Scrp1300(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrm2000 scrm2000, Scrp1300A scrp1300A) {
		try {
			main(scrm2000, scrp1300A);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrm2000 pscrm2000, Scrp1300A pscrp1300A) {
		if (pscrm2000 == null && pscrp1300A == null) {
			primeiraVez = true;
			// scrm2000 = new Scrm2000 (primeiraVez);
			scrm2000 = preMapas();
			scrm2000.setNavegar("../scrp1300/executar");
			result.include("scrm2000", scrm2000);
			sessao.setAtributo("SCRP1300", this);
			scrm2000.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrm2000, pscrp1300A);
		}

		scrm2000.receberTela(false, result);
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1000 scrp1000 = new Scrp1000(result, sessao);
			scrp1000.executar(null);
			return;
		}
		// Par�grafo: fd33()
		while (criminalView.pesquisaRegEstadualGeral(jReg_geral)) {
			if (criminalView.getStatusReg() == 5) {
				scrm2000.enviarMensagem(null, "Ficha Criminal ja� foi Excluida anteriormente");
				return;
			}
			// Recupera os Dados
			scrm2000.setJregGeral(criminalView.getRegEstadualGeral());
			dedos[1][1] = criminalView.getPolegarDireito();
			dedos[2][1] = criminalView.getIndicadorDireito();
			dedos[3][1] = criminalView.getMedioDireito();
			dedos[4][1] = criminalView.getAnularDireito();
			dedos[5][1] = criminalView.getMinimoDireito();
			dedos[1][2] = criminalView.getPolegarEsquerdo();
			dedos[2][2] = criminalView.getIndicadorEsquerdo();
			dedos[3][2] = criminalView.getMedioEsquerdo();
			dedos[4][2] = criminalView.getAnularEsquerdo();
			dedos[5][2] = criminalView.getMinimoEsquerdo();
			jNomeCompleto = criminalView.getNomeCompleto();
			jMae = criminalView.getNomeMae();
			jData_nasc = criminalView.getDataNasc();
			jIdentidade = criminalView.getRegFederalCi();
			jUfRegGeral = criminalView.getUfRegEstadualGeral();
			jPai = criminalView.getNomePai();
			jDelegacia = criminalView.getNomeDelegacia();
			jDescMunicipio = criminalView.getMunicipioRegGeral();
			jMunicipio = criminalView.getCodigoMunicipioRegGeral();
			jNomeAnterior = criminalView.getNomeAnterior();
			jAlcunha = criminalView.getApelidoAlcunhas(1);
			jSexo = criminalView.getSexo();
			jNaturalidade = criminalView.getNaturalidade();
			jCodMunNascimento = criminalView.getCodigoMunicipioNasc();
			jUfNascimento = criminalView.getUfNaturalidade();
			jDocApresentado = criminalView.getDocumentoApresent();
			jNumDocApresentado = criminalView.getNumDocumentoApresent();
			jOrgaoExpUf = criminalView.getOrgaoExpUfUfUf();
			jStatus = String.valueOf(criminalView.getStatusReg());
			jProfissao = criminalView.getProfissao();
			jInstrucao = criminalView.getGrauInstrucao();
			jAvRua = criminalView.getAvRua();
			jNumero = criminalView.getNumero();
			jBairro = criminalView.getBairro();
			jMunEndereco = criminalView.getMunicipio();
			jUfEndereco = criminalView.getEstado();
			jCep = criminalView.getCep();
			jComplemento = criminalView.getComplemento();
			jDataRegistro = criminalView.getDataReg();
			jDataAtuacao = criminalView.getDataAtuacao();
			jAltura = criminalView.getAltura();
			jEstadoCivil = criminalView.getEstadoCivil();
			jCutis = criminalView.getCodigoCutis();
			jCorCabelo = criminalView.getCodigoCorCabelo();
			jTipoCabelo = criminalView.getCodigoTipoCabelo();
			jCorOlhos = criminalView.getCodigoCorOlhos();
			jSinais = criminalView.getMarcaPartCicatTatuag();
			jCompleicao = criminalView.getCompleicao();
			jNomeVitima = criminalView.getNomeVitima();
			jMotivo = criminalView.getMotivoPrisaoLei();
			jOcorrencia = 1;
			jObservacoes = criminalView.getObservacao();
			jDataDig = criminalView.getDataDocAtu();
			jMatricula = criminalView.getMatriculaFuncAtu();
			jHorario = criminalView.getHoraAtu();

			jDataIni = jDataDig;
			// Par�grafo: fd2()
			senhaView.consultaMatricula(jMatricula);

			jNomeDigitador = senhaView.getNome();

		}
		if (criminalView.registrosProcessados() == 0) {
			Scrp1420 scrp1420 = new Scrp1420(result, sessao);
			scrp1420.setMensagem("                   NENHUMA FICHA CRIMINAL FOI ENCONTRADA");
			scrp1420.executar(null);
			return;
		}
		switch (jStatus) {
		case "0": {
			jDescreg = "Registro Normal";
			break;
		}
		case "1": {
			jDescreg = "Registro Cancelado";
			break;
		}
		case "2": {
			jDescreg = "Registro com Mandato de Prisao preventiva";
			break;
		}
		case "3": {
			jDescreg = "Condenado";
			break;
		}
		default: {
			break;
		}
		}

		switch (jInstrucao) {
		case 0: {
			jDescInstrucao = "Nao Informada";
			break;
		}
		case 1: {
			jDescInstrucao = "Nao Alfabetizado";
			break;
		}
		case 2: {
			jDescInstrucao = "1o. Grau Incompleto";
			break;
		}
		case 3: {
			jDescInstrucao = "1o. Grau Completo";
			break;
		}
		case 4: {
			jDescInstrucao = "2o. Grau Incompleto";
			break;
		}
		case 5: {
			jDescInstrucao = "2o. Grau Completo";
			break;
		}
		case 6: {
			jDescInstrucao = "Superior Incompleto";
			break;
		}
		case 7: {
			jDescInstrucao = "Superior Completo";
			break;
		}
		default: {
			break;
		}
		}

		switch (jAltura) {
		case 0: {
			jDescAltura = "Nao Informada";
			break;
		}
		case 1: {
			jDescAltura = "1,60 ou Menos";
			break;
		}
		case 2: {
			jDescAltura = "1,61 - 1,70";
			break;
		}
		case 3: {
			jDescAltura = "1,71 - 1,80";
			break;
		}
		case 4: {
			jDescAltura = "1,81 - 1,90";
			break;
		}
		case 5: {
			jDescAltura = "1,91 ou Mais";
			break;
		}
		default: {
			break;
		}
		}

		switch (jEstadoCivil) {
		case 0: {
			jDescCivil = "Nao Informado";
			break;
		}
		case 1: {
			jDescCivil = "Casado";
			break;
		}
		case 2: {
			jDescCivil = "Solteiro";
			break;
		}
		case 3: {
			jDescCivil = "DESQUITADO";
			break;
		}
		case 4: {
			jDescCivil = "Viuvo";
			break;
		}
		case 5: {
			jDescCivil = "DIVORCIADO";
			break;
		}
		default: {
			break;
		}
		}

		switch (jCutis) {
		case 0: {
			jDescCutis = "Nao Informada";
			break;
		}
		case 1: {
			jDescCutis = "BRANCA";
			break;
		}
		case 2: {
			jDescCutis = "Preta";
			break;
		}
		case 3: {
			jDescCutis = "Parda Clara";
			break;
		}
		case 4: {
			jDescCutis = "Parda Escura";
			break;
		}
		case 5: {
			jDescCutis = "AMARELA";
			break;
		}
		default: {
			break;
		}
		}

		switch (jCorCabelo) {
		case 0: {
			jDescCor = "Nao Informada";
			break;
		}
		case 1: {
			jDescCor = "CASTANHOS";
			break;
		}
		case 2: {
			jDescCor = "PRETOS";
			break;
		}
		case 3: {
			jDescCor = "Louros";
			break;
		}
		case 4: {
			jDescCor = "Grisalhos";
			break;
		}
		case 5: {
			jDescCor = "Ruivos";
			break;
		}
		case 6: {
			jDescCor = "Brancos";
			break;
		}
		default: {
			break;
		}
		}
		switch (jTipoCabelo) {
		case 0: {
			jDescTipocabelo = "Nao Informado";
			break;
		}
		case 1: {
			jDescTipocabelo = "Liso";
			break;
		}
		case 2: {
			jDescTipocabelo = "Encaracolado";
			break;
		}
		case 3: {
			jDescTipocabelo = "Ondulado";
			break;
		}
		case 4: {
			jDescTipocabelo = "CARAPINHA";
			break;
		}
		default: {
			break;
		}
		}
		switch (jCorOlhos) {
		case 0: {
			jDescOlho = "Nao Informada";
			break;
		}
		case 1: {
			jDescOlho = "CASTANHOS";
			break;
		}
		case 2: {
			jDescOlho = "PRETOS";
			break;
		}
		case 3: {
			jDescOlho = "AZUIS";
			break;
		}
		case 4: {
			jDescOlho = "VERDES";
			break;
		}
		case 5: {
			jDescOlho = "Duas Cores";
			break;
		}
		default: {
			break;
		}
		}
		switch (jCompleicao) {
		case 0: {
			jDescCompleicao = "Nao Informada";
			break;
		}
		case 1: {
			jDescCompleicao = "Magro";
			break;
		}
		case 2: {
			jDescCompleicao = "Medio";
			break;
		}
		case 3: {
			jDescCompleicao = "Gordo";
			break;
		}
		case 4: {
			jDescCompleicao = "Troncudo";
			break;
		}
		case 5: {
			jDescCompleicao = "Raquitico";
			break;
		}
		default: {
			break;
		}
		}

		// Escopo - report1.receberTela(false, result);

		// Escopo - report2.receberTela(false, result);

		// Escopo - report3.receberTela(false, result);

		if (!scrp1300A.getEnviada()) {
			result.include("scrp1300A", scrp1300A);
			sessao.setAtributo("SCRP1300", this);
			scrp1300A.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (pscrp1300A != null) {
			scrp1300A.receberTela(false, result);
		}

		if (!((UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_processa)))) {
			scrm2000.enviarMensagem(null, "Tecla invalida");
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			Scrp1000 scrp1000 = new Scrp1000(result, sessao);
			scrp1000.executar(null);
			return;
		}
		if (!((scrp1300A.getJconf().equals("S") || scrp1300A.getJconf().equals("N")))) {
			scrm2000.enviarMensagem(null, "Confirmacao invalida");
		}
		if (scrp1300A.getJconf().equals("N")) {
			// dao.rollback();
			Scrp1300 scrp1300 = new Scrp1300(result, sessao);
			scrp1300.executar(null, null);
			return;
		} else {
			criminalView.setStatusReg(5);
			criminalView.atualiza();
			// dao.commit();
			Scrp1300 scrp1300 = new Scrp1300(result, sessao);
			scrp1300.executar(null, null);
			return;
		}

	}

	private void restaurarEstados(Scrm2000 pscrm2000, Scrp1300A pscrp1300A) {
		this.scrp1300Anterior = (Scrp1300) sessao.getAtributo("SCRP1300");
		if (pscrm2000 != null) {
			scrm2000 = pscrm2000;
		} else {
			scrm2000 = this.scrp1300Anterior.scrm2000;
		}
		scrm2000.setSessao(sessao);
		if (pscrp1300A != null) {
			scrp1300A = pscrp1300A;
		} else {
			scrp1300A = this.scrp1300Anterior.scrp1300A;
		}
		scrp1300A.setSessao(sessao);
		this.faseproc = this.scrp1300Anterior.faseproc;
	}
}
